Database systems are widely used for a number of applications. Generally, the applications demand data integrity and consistency. That is, the database systems are relied upon by applications to accurately and efficiently store and retrieve data.
Many database systems use a transaction log or log file to store log records associated with operations or changes associated with a database. Every transaction (where “transaction” refers to a set of operations) associated with the database must cause a log record to be written into the log that describes the transaction and its affect on the data in the database. For example, each log record may contain information identifying the database change that occurred as a result of the transaction. In this manner, a record of information is preserved that can be used to recover from errors or to restore the database to a prior state. In general, transactions are written to the transaction log sequentially using a log queue. The log queue is used as a cache to write log records into log pages. A log writer task or subroutine operates to write pages from the log queue to a storage medium or log disc.
One technique that has improved the overall performance of database systems is the use of multiprocessing techniques, where computer systems having multiple processors are used to process database transactions in parallel. Unfortunately, these parallel processing techniques lead to transaction collisions and delays in writing transaction data to the log queue. For example, transactions being processed in parallel may need to wait to be written to the log while another transaction has its commit log record successfully written.
It would be desirable to provide improved systems and methods for implementing multiple log queues in a database management system.